package com.x.epspace.common;

import java.util.StringTokenizer;
import java.util.Vector;

/**
 * <p>Title: 字符串处理类</p>
 * <p>Description: 工具类</p>
 * @author zbxu
 * @version $Revision: 1.3 $ $Date: 2006/10/27 11:46:35 $
 */
public class StringTools {
	
	/**
	 * 以type为分界符分离str字符串,返回分离后的数组
	 * 
	 * @param str 待处理字符串
	 * @param type 分界符
	 * @return array 处理后的字符串数组
	 */
	public static String[] split(String str, String type) {
		
		int begin = 0;
		int pos = 0;
		String tempstr = "";		
		String[] array = null;
		Vector vec = null;		
		if(!notNull(str)) return null;  		
		int len = str.trim().length();		
		str = str + type;

		if (len > 0) {
			while (str.length() > 0) {

				if (vec == null) {
					vec = new Vector();
				}

				pos = str.indexOf(type, begin);
				tempstr = str.substring(begin, pos);
				str = str.substring(pos + 1, str.length());
				vec.add(tempstr);				
			}
		}
		
		if (vec != null) {
			array = new String[vec.size()];

			for (int i = 0; i < vec.size(); i++) {
				array[i] = (String) vec.get(i);				
			}
		}

		return array;
	}
	
	/**
	 * 按长度把字符串前补0
	 * 
	 * @param s 需要补位字符串对象
	 * @return len 该字符串的长度
	 */
	public static String len(String s, int len) {
		
		if (!notNull(s))
			s = "";		
		
		int length = len - s.length();		
		for (int i = 0; i < length; i++) {  
			s = "0" + s;
		}
		return s;
	}
	
	/**
	 * 按长度把字符串后补0
	 * 
	 * @param s 需要补位字符串对象
	 * @return len 该字符串的长度
	 */
	public static String len1(String s, int len) {
		
		if (!notNull(s))
			s = "";		
		
		int length = len - s.length();		
		for (int i = 0; i < length; i++) {  
			s = s + "0";
		}
		return s;
	}
	
	/**
	 * 判断字符串是否为空
	 * 
	 * @param s 需要判断字符串对象
	 * @return true 表示不为空 false 为空
	 */
	public static boolean notNull(String s) {
		
		if (s == null || s.trim().length() <= 0 || "".equals(s) || "null".equals(s))              
			return false;
		else
			return true;
	}
	
	
	/**
	 * 返回一个布尔值，表示两个字符串是否相等
	 * 
	 * @param objstr 字符串对象
	 * @param bjstr 字符串对象
	 * @return false 表示不相等 true 相等
	 */
	public static boolean equals(String objstr, String bjstr) {

		boolean lean = false;
		lean = (objstr != null) && objstr.equals(bjstr);

		return lean;
	}
	
	
	/**
	 * 替换source中的str1为str2
	 * 
	 * @param source 待替换的字符串
	 * @param str1 待替换的字符
	 * @param str2 替换的字符
	 * @return java.lang.String 替换后的字符串
	 */
	public static String replace(String source,char str1,String str2)
	{
		return replace(source,String.valueOf(str1),str2);
	}
	
	/**
	 * 替换source中的str1为str2
	 * 
	 * @param source 待替换的字符串
	 * @param str1 待替换的字符
	 * @param str2 替换的字符
	 * @return java.lang.String 替换后的字符串
	 */
	public static String replace(String source,String str1,String str2)
	{
		if (source==null)	
			return "";
		String desc = "";
		int posstart = 0;
		int posend = source.indexOf(str1,0);
		int len = source.length();
		while (posend>=0 && posstart<len)
		{
			desc += source.substring(posstart,posend)+str2;
			posstart = posend+str1.length();
			posend = source.indexOf(str1,posstart);
		}
		if (posstart < len) 
			desc += source.substring(posstart,len);
		return desc;
	}
	
	/**
	 * 替换source中的"\n"为"换行符"
	 * 
	 * @param content 待替换的字符串
	 * @return java.lang.String 替换后的字符串
	 */
	public static String replace(String content)
	{
	    String[] tempValue = null;
        if (content != null) {
            if (content.indexOf("\n") != -1) {
                tempValue = StringTools.split(content, "\n");
            }
            if (tempValue != null && tempValue.length > 0) {
                content = "";
                for(int i = 0; i < tempValue.length; i++) {
                    content += tempValue[i] + "<br>";
                }
                content = content.substring(0, content.length() - 4);
            }
        }
		return content;
	}
	
	
	/**
     * 替换字符串中部分信息为另外信息
     * 
     * @param arg0 要用来被替换的字符串
     * @param sParam 替换的字符串内容，以,分隔
     * @param type arg0中要用来替换标记符
     * @return sbarg0 替换后字符串
     */
    public static String getStringModify(String arg0, String sParam,String type)
    {   	
        if(!notNull(sParam))
        {
            return arg0;
        }else{        	
        	return getStringModify(arg0, split(sParam,","),type);  
        }    	 
    }
    
    /**
     * 替换字符串中部分信息为另外信息
     * 
     * @param arg0 要用来被替换的字符串
     * @param sParams 替换的字符串数组
     * @param type arg0中要用来替换标记符
     * @return sbarg0 替换后字符串
     */
    public static String getStringModify(String arg0, String[] sParams,String type)
    {
    	
        StringBuffer sbarg0 = new StringBuffer();
        StringTokenizer st = new StringTokenizer(arg0, type);

        if(sParams == null || st.countTokens() - 1 != sParams.length)
        {
            return arg0;
        }
       
        //将其中的?号替换对应的sParams
        for(int i = 0; i < sParams.length; i++)
        {
            sbarg0.append(st.nextToken()).append(sParams[i]);
        }
        sbarg0.append(st.nextToken());       
        return sbarg0.toString();
    }
    
    public static String replaceWarpChar(String inputstr){
    	return inputstr.replace("N", String.valueOf((char)10));
    }
    
    public static String replaceBlankChar(String inputstr){
    	return inputstr.replace("B", String.valueOf((char)32));
    }

}
